#include <string>
#include <vector>
#include <utility> // 各种常用的小工具类 - pair
#include <fstream>
#include <iostream>

using namespace std;

// 返回 place 中 x,y 位置是否是一头牛
bool isCow(int x, int y, const vector<vector<char>> &place) {
  return x >= 0 && x < place.size() && 
    y >= 0 && y < place[0].size() && 
    place[x][y] == 'C';
}

// 返回 place 中 x,y 位置是否是草地
bool isGrass(int x, int y, const vector<vector<char>> &place) {
  return x >= 0 && x < place.size() && 
    y >= 0 && y < place[0].size() && 
    place[x][y] == 'G';
}

int main(int argc, char const *argv[])
{
  /* code */
  // 处理输入
  ifstream ifs("ACowParty.in");

  int rows = 0, cols = 0;
  ifs >> rows >> cols;

  // place 里已经要先有 rows * cols 这么多个元素
  vector<char> v(cols, ' ');
  vector<vector<char>> place(rows, v);

  for (int i = 0; i < rows; ++i) {
    for (int j = 0; j < cols; ++j) {
      char c = ' ';
      ifs >> c;

      // 如果我们可以把 c 放到 place 的正确位置
      // 前提是 place 里要存在这个位置才行
      place[i][j] = c;
    }
  }

  // place
  int friends = 0; // 答案，可以成为朋友的牛的对数

  // 1. 如何描述一对牛的位置
  // - 每一头牛的位置是一对数字
  // - pair<int, int> pos1 {0, 4};
  // - pair<int, int> pos2 {1, 3};
  // 
  // - vector<pair<int, int>> positions {pos1, pos2};
  // vector 里只有两个元素，表示一对可以成为朋友的牛的位置

  // vector< vector<pair<int, int>> > - 选择1
  // set< vector<pair<int, int>> > - 选择2

  // ----------------------------------------
  // 遍历 place 矩阵
  // 只有遇到草的格子的时候才需要处理
  // - 检查 i,j 格子上下左右的牛的数量
  // - 如果数量 >= 3: friends += 1
  // - 如果数量 == 2: 临时记录这对牛的位置

  // friends = friends + set 中元素的个数



  return 0;
}
